test: fully cover NativeObject via a test subclass#31
Merged
Conversation
NativeObject is abstract, so a minimal concrete TestObject exercises every branch: ptr() while open, close() runs tryClose exactly once with the owned pointer, repeated close is idempotent, ptr() after close throws, a throwing tryClose is swallowed (destructors must not throw) yet still marks the object closed, constructing with NULL never calls tryClose, and 32 concurrent close() calls release exactly once. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
NativeObject(theAutoCloseablebase for native-pointer wrappers) had no direct unit test. Since it is abstract, a minimal concreteTestObjectsubclass exercises every branch:ptr()returns the owned pointer while openclose()callstryCloseexactly once, with the owned pointerclose()is idempotent (released once)ptr()afterclose()throwsIllegalStateExceptiontryCloseis swallowed (destructors must not throw) yet the object is still marked closedMemorySegment.NULLnever callstryCloseclose()calls release exactly once (latch-gated, no sleep)7 tests, checkstyle clean.
🤖 Generated with Claude Code